home *** CD-ROM | disk | FTP | other *** search
/ Business Heaven / Business Heaven.iso / network.w / rfdml112 / unix.scr < prev    next >
Text File  |  1993-11-14  |  19KB  |  708 lines

  1. ;------------------------------------------------------
  2. ;
  3. ;UNIX.SCR --- The script file for UNIX (world.std.com)
  4. ;
  5. ;------------------------------------------------------
  6. ;
  7. ;   We begin with the format specifiers to which allow
  8. ;the script to identify where the MailId, RealName,
  9. ;and Subject texts are in a newly downloaded letter.
  10. ;
  11. Format
  12. Subject: $SUBJECT$\n
  13. Subj: $SUBJECT$\n
  14. From: "$NAME$" <$UID$>\n
  15. From: ""$NAME$"" <$UID$>\n
  16. From: $NAME$<$UID$>\n
  17. From: $UID$ ($NAME$)\n
  18. From: $UID$ \n
  19. From: $UID$\n
  20. Endformat
  21. ;------------------------------------------------------
  22. ;
  23. ;   Next is a set of aliases which determine various
  24. ; items such as where some of the standard commands
  25. ; like '/usr/ucb/mail' live.
  26. ;
  27. Alias sendmail '/usr/ucb/mail '
  28. Alias readmail '/usr/ucb/mail'
  29. Alias saveletter 's '
  30. Alias deleteletter 'd '
  31. Alias quitmail 'q'
  32. Alias mailnull '#'
  33. Alias mailshellesc '!'
  34. Alias rm '/bin/rm -f '
  35. Alias echo '/bin/echo '
  36. Alias cat '/bin/cat '
  37. Alias logoff 'exit'
  38. ;------------------------------------------------------
  39. ;
  40. ; The following aliases determine the various prompts the
  41. ; script will look for.  The most important one is the
  42. ; 'prompt' alias, which will need to be adjusted to match
  43. ; the prompt that your UNIX host gives.
  44. ;
  45. Alias prompt '\nworld%'
  46. Alias mailprompt '\n& '
  47. Alias subjectprompt '\nSubject: '
  48. Alias ccprompt1 'Cc:'
  49. Alias ccprompt2 'CC:'
  50. Alias ccprompt3 'cc:'
  51. Alias loginprompt '\nlogin: '
  52. Alias passwdprompt '\nPassword:'
  53. Alias havemailprompt 'message'
  54. Alias nomailprompt 'No mail'
  55. ;
  56. ; If you want to append your ~/.signature file to every outgoing
  57. ; message, set the following alias to SEND_SIG, otherwise set it
  58. ; to NO_SIGNATURE:
  59. ;
  60. Alias signature NO_SIGNATURE
  61. ;
  62. ;------------------------------------------------------
  63. ;
  64. ; The following aliases determine what the script will look
  65. ; for to determine that we've successfully logged in
  66. ; (banner1-3), and what it will look for to determine that
  67. ; we've successfully logged out (logoffbanner1-2)
  68. ;
  69. Alias banner1 'Public Access Unix'
  70. Alias banner2 'New World'
  71. Alias banner3 '\nLast login:'
  72. Alias logoffbanner1 %loginprompt%
  73. Alias logoffbanner2 'closed'
  74. ;------------------------------------------------------
  75. ;
  76. ; The following alias determines what intermediate network
  77. ; will be assumed.  It can be one of the following:
  78. ;
  79. ;    DIRECT    Direct connection to the host (default)
  80. ;    DIRLAT    Direct connection to a LAT
  81. ;    CIS    Connect through CIS Packet Net
  82. ;
  83. Alias connectype DIRECT
  84. ;
  85. ; The following alias should be set TRUE if your modem
  86. ; drops carrier every time you make a connection.  This
  87. ; alias simply forces the script to wait 2 seconds for
  88. ; the connection to settle before starting the script.
  89. ;
  90. Alias waitasec FALSE
  91. ;
  92. ;------------------------------------------------------
  93. ;
  94. ; The following aliases define the connection and password
  95. ; keywords to specify for CIS Packet Net.  They are currently
  96. ; set to connect to world.std.com, and need to be changed
  97. ; for any other UNIX site.
  98. ;
  99. Alias cisconnect 'world,domestic'
  100. Alias cispasswd 'notobvious'
  101. Alias cisconnprompt 'Connected to world.std.com'
  102. ;
  103. ;------------------------------------------------------
  104. ;
  105. ; Set the following aliases to reflect your LAT's prompt if you
  106. ; are connecting through a LAT:
  107. ;
  108. Alias latprompt1 'local>'
  109. Alias latprompt2 'Local>'
  110. ;
  111. ; Set the following alias to be the command which connects your LAT
  112. ; to the host
  113. ;
  114. Alias hostconnect 'open hostname'
  115. ;
  116. ;------------------------------------------------------
  117. ;
  118. ; The following aliases determine the command to use for
  119. ; downloading, and the prompt the upload program will send
  120. ; when it's ready to send data.  Comment these out if
  121. ; you don't want to use ZMODEM:
  122. ;
  123. Alias sz 'sz '
  124. Alias szprompt1 '\nsz: 1 file'
  125. Alias dnloadproto ZMODEM
  126. ;
  127. ; Uncomment the following aliases if you want to use YMODEM
  128. ; as your download protocol:
  129. ;
  130. ;Alias sz 'sb '
  131. ;Alias szprompt1 '\nsb: 1 file'
  132. ;Alias dnloadproto YMODEM
  133. ;
  134. ; Uncomment the following aliases if you want to use XMODEM
  135. ; as your download protocol:
  136. ;
  137. ;Alias sz 'sx '
  138. ;Alias szprompt1 'command now.'
  139. ;Alias dnloadproto XMODEM
  140. ;
  141. ;------------------------------------------------------
  142. ;
  143. ; The following aliases determine the command to use for
  144. ; uploading, and the prompt the upload program will send
  145. ; when it's ready to receive data.  Comment these out if
  146. ; you don't want to use ZMODEM:
  147. ;
  148. Alias rz 'rz -a '
  149. Alias rzprompt1 'to your modem'
  150. Alias rzprompt2 'ready'
  151. Alias uploadproto ZMODEM
  152. ;
  153. ; Uncomment the following aliases if you want to use YMODEM
  154. ; as your upload protocol:
  155. ;
  156. ;Alias rz 'rb -a '
  157. ;Alias rzprompt1 'to your modem'
  158. ;Alias rzprompt2 'ready'
  159. ;Alias uploadproto YMODEM
  160. ;
  161. ; Uncomment the following aliases if you want to use XMODEM
  162. ; as your upload protocol:
  163. ;
  164. ;Alias rz 'rx -ac '
  165. ;Alias rzprompt1 'to your modem'
  166. ;Alias rzprompt2 'ready to receive'
  167. ;Alias uploadproto XMODEM
  168. ;
  169. ; Uncomment the following aliases if you want to use KERMIT
  170. ; as your upload protocol:
  171. ; (note that you *must* use kermit on CIS Packet Net)
  172. ;
  173. ;Alias rz 'kermit -e 256 -r '
  174. ;Alias rzprompt1 'READY TO RECEIVE'
  175. ;Alias rzprompt2 'ready to receive'
  176. ;Alias uploadproto KERMIT
  177. ;
  178. ;------------------------------------------------------
  179. ; This is the main entry-point for the script, which
  180. ; decides which intermediate network will be used to
  181. ; connect to the host.
  182. ;
  183. Begin START
  184.    If %waitasec% Then WAIT_START
  185.    If TRUE Then %connectype%
  186. End
  187. Begin WAIT_START
  188.    Timeout 2 Goto %connectype%
  189. End
  190. ;------------------------------------------------------
  191. ; This is the entry-point for direct-connection to the
  192. ; host.  This state merely sends CR's every three
  193. ; seconds until it sees a login prompt.
  194. ;
  195. Begin DIRECT
  196.    Caption 'connected'
  197.    Cr
  198.    When %loginprompt% Goto USERNAME
  199.    Timeout 3 Goto START
  200. End
  201. ;------------------------------------------------------
  202. ; This is the entry-point for the CIS Packet Net connection
  203. ; to the host.  It merely answers the Host Name and Password
  204. ; prompts for the desired host.  Don't worry about the
  205. ; seemingly 'garbaged' When statements.  They are that way
  206. ; to account for an 8n1 connection to a CIS node which
  207. ; insists on talking 7e1.
  208. ;
  209. Begin CIS
  210.    Caption 'connected'
  211.    Cr
  212.    When '\nHost Name:' Goto CISHOSTNAME
  213.    When 'Ho≤táNßφe:' Goto CISHOSTNAME
  214.    Timeout 3 Goto CIS
  215. End
  216. Begin CISHOSTNAME
  217.    Transmit %cisconnect%
  218.    Cr
  219.    When '\nHost Name:' Goto CISHOSTNAME
  220.    When 'Ho≤táNßφe:' Goto CISHOSTNAME
  221.    When '\nPassword:' Goto CISHOSTPASSWORD
  222.    When 'Pß≤≤worΣ:' Goto CISHOSTPASSWORD
  223.    Timeout 30 Goto GIVE_UP
  224. End
  225. Begin CISHOSTPASSWORD
  226.    Transmit %cispasswd%
  227.    Cr
  228.    When '\nHost Name:' Goto CISHOSTNAME
  229.    When 'Ho≤táNßφe:' Goto CISHOSTNAME
  230.    When '\nPassword:' Goto CISHOSTPASSWORD
  231.    When 'Pß≤≤worΣ:' Goto CISHOSTPASSWORD
  232.    When %cisconnprompt% Goto CONNECTHOST
  233.    When %loginprompt% Goto USERNAME
  234.    Timeout 30 Goto GIVE_UP
  235. End
  236. Begin CONNECTHOST
  237.    Caption 'logging in'
  238.    When %loginprompt% Goto USERNAME
  239.    Timeout 30 Goto GIVE_UP
  240. End
  241. ;------------------------------------------------------
  242. ; These two states handle connecting to the host
  243. ; once we're directly connected to the LAT
  244. ;
  245. Begin DIRLAT
  246.    Caption 'connected'
  247.    Cr
  248.    When %latprompt1% Goto LOCAL_PROMPT
  249.    When %latprompt2%  Goto LOCAL_PROMPT
  250.    Timeout 3 Goto START
  251. End
  252. Begin LOCAL_PROMPT
  253.    Transmit %hostconnect%
  254.    Cr
  255.    When %latprompt1% Goto LOCAL_PROMPT
  256.    When %latprompt2%  Goto LOCAL_PROMPT
  257.    When %loginprompt% Goto USERNAME
  258.    Timeout 30 Goto GIVE_UP
  259. End
  260. ;------------------------------------------------------
  261. ; At this point we've seen the host's login prompt, and
  262. ; are attempting to log in.
  263. ;
  264. Begin USERNAME
  265.    Transmit $USERNAME
  266.    Cr
  267.    When %passwdprompt% Goto PASSWORD
  268.    When %loginprompt% Goto USERNAME
  269.    Timeout 120 Goto NO_LOGIN
  270. End
  271. Begin PASSWORD
  272.    Transmit $PASSWORD
  273.    Cr
  274.    When %passwdprompt% Goto PASSWORD
  275.    When %loginprompt% Goto USERNAME
  276.    When %banner1% Goto LOGGED_IN
  277.    When %banner2% Goto LOGGED_IN
  278.    When %banner3% Goto LOGGED_IN
  279.    When %prompt% Goto JUMP_TO_MAIL
  280.    Timeout 120 Goto NO_LOGIN
  281. End
  282. Begin LOGGED_IN
  283.    Caption 'logged in'
  284.    When 'TERM = ' Goto SEND_TERMTYPE
  285.    When %prompt% Goto JUMP_TO_MAIL
  286.    When 'More? [ynq]' Goto ANNOUNCEMENTS
  287.    Timeout 120 Goto NO_LOGIN
  288. End
  289. ;------------------------------------------------------
  290. ; If your login procedure asks for a termtype, this
  291. ; state merely sets it to a vanilla 'ansi' terminal.
  292. ;
  293. Begin SEND_TERMTYPE
  294.    Transmit 'ansi'
  295.    Cr
  296.    When %prompt% Goto JUMP_TO_MAIL
  297.    When 'More? [ynq]' Goto ANNOUNCEMENTS
  298.    Timeout 45 Goto NO_LOGIN
  299. End
  300. ;------------------------------------------------------
  301. ; These states are specific to world.std.com, which
  302. ; has "announcements" at login.  If there are any
  303. ; pending, they are downloaded to the PC, fooling
  304. ; RFD Mail into thinking they are a mail message from
  305. ; 'World Announcements'.
  306. ;
  307. Begin ANNOUNCEMENTS
  308.    Caption 'Announcements'
  309.    Transmit 's msgs.tmp'
  310.    Cr
  311.    When '\nMore? [ynq]' Goto NEXT_ANNOUNCEMENT
  312.    When '--More--' Goto SCROLL
  313.    When %prompt% Goto BUILD_ANNOUNCEMSG
  314.    Timeout 45 Goto NO_LOGIN
  315. End
  316. Begin NEXT_ANNOUNCEMENT
  317.    Transmit 'n'
  318.    Cr
  319.    When '\nMore? [ynq]' Goto ANNOUNCEMENTS
  320.    When '--More--' Goto SCROLL
  321.    When %prompt% Goto BUILD_ANNOUNCEMSG
  322.    Timeout 45 Goto NO_LOGIN
  323. End
  324. Begin BUILD_ANNOUNCEMSG
  325.    Transmit %echo%
  326.    Transmit '"From: announce (World Announcements)" > '
  327.    Transmit $LETTER.FILENAME
  328.    Cr
  329.    When %prompt% Goto CAT_ANNOUNCEMENT
  330.    Timeout 45 Goto CAT_ANNOUNCEMENT
  331. End
  332. Begin CAT_ANNOUNCEMENT
  333.    Transmit %cat%
  334.    Transmit '< msgs.tmp >> '
  335.    Transmit $LETTER.FILENAME
  336.    Cr
  337.    When ' such file ' Goto NO_ANNOUNCEMENT
  338.    When %prompt% Goto DNLOAD_ANNOUNCEMENT
  339.    Timeout 45 Goto NO_LOGIN
  340. End
  341. Begin DNLOAD_ANNOUNCEMENT
  342.    Transmit %sz%
  343.    Transmit $LETTER.FILENAME
  344.    Cr
  345.    When %szprompt1% Goto DO_ANNDNLOAD
  346.    When %prompt% Goto NO_ANNOUNCEMENT
  347.    Timeout 45 Goto NO_LOGIN
  348. End
  349. Begin DO_ANNDNLOAD
  350.    Download %dnloadproto% Then ANNDNLD_SUCCESS Else NO_LOGIN
  351. End
  352. Begin ANNDNLD_SUCCESS
  353.    Confirm LETTER.RECEIVED Successful
  354.    Caption 'Announcements Received'
  355.    When %prompt% Goto NO_ANNOUNCEMENT
  356.    Timeout 5 Goto END_ANNDNLOAD
  357. End
  358. Begin END_ANNDNLOAD
  359.    Cr
  360.    When %prompt% Goto NO_ANNOUNCEMENT
  361.    Timeout 5 Goto END_ANNDNLOAD2
  362. End
  363. Begin END_ANNDNLOAD2
  364.    Control C
  365.    When %prompt% Goto NO_ANNOUNCEMENT
  366.    Timeout 5 Goto GIVE_UP
  367. End
  368. Begin NO_ANNOUNCEMENT
  369.    Transmit %rm%
  370.    Transmit 'msgs.tmp '
  371.    Transmit $LETTER.FILENAME
  372.    Cr
  373.    When %prompt% Goto JUMP_TO_MAIL
  374.    Timeout 45 Goto JUMP_TO_MAIL
  375. End
  376. Begin SCROLL
  377.    Transmit ' '
  378.    When '\nMore? [ynq]' Goto ANNOUNCEMENTS
  379.    When '--More--' Goto SCROLL
  380.    When %prompt% Goto BUILD_ANNOUNCEMSG
  381.    Timeout 30 Goto NO_LOGIN
  382. End
  383. ;------------------------------------------------------
  384. ; These states check to see if there is any mail waiting
  385. ; by running the host's mail program and looking for
  386. ; keywords indicating the presence/absence of mail.
  387. ; If there's mail (and the script is in fetch mode),
  388. ; then the FETCH_FROM_MAIN_MENU sequence is started.
  389. ; If there's no mail, but there are letters to send,
  390. ; the SEND_MAIL sequence is started.  Otherwise the
  391. ; script just logs off.
  392. ;
  393. Begin JUMP_TO_MAIL
  394.    Transmit %readmail%
  395.    Cr
  396.    When %nomailprompt% Goto NO_MAIL_WAITING
  397.    When %havemailprompt% Goto MAIL_WAITING
  398.    Timeout 10 Goto RETRY_JUMP
  399. End
  400. Begin RETRY_JUMP
  401.    Transmit %readmail%
  402.    Cr
  403.    When %nomailprompt% Goto NO_MAIL_WAITING
  404.    When %havemailprompt% Goto MAIL_WAITING
  405.    Timeout 15 Goto GIVE_UP
  406. End
  407. Begin NO_MAIL_WAITING
  408.    Caption 'No Mail'
  409.    If MORE_LETTERS Then SEND_MAIL
  410.    When %prompt% Goto LOG_OFF
  411.    Timeout 15 Goto GIVE_UP
  412. End
  413. Begin MAIL_WAITING
  414.    Caption 'You Have Mail'
  415.    If FETCHING Then FETCH_FROM_MAIN_MENU
  416.    If MORE_LETTERS Then SEND_BUT_QUIT
  417.    When %mailprompt% Goto QUIT_MAIL
  418.    Timeout 120 Goto LOG_OFF
  419. End
  420. Begin QUIT_MAIL
  421.    Transmit %quitmail%
  422.    Cr
  423.    When %mailprompt% Goto QUIT_MAIL
  424.    When %prompt% Goto LOG_OFF
  425.    Timeout 15 Goto GIVE_UP
  426. End
  427. Begin SEND_BUT_QUIT
  428.    Transmit %quitmail%
  429.    Cr
  430.    When %mailprompt% Goto SEND_BUT_QUIT
  431.    When %prompt% Goto REQUEST_UPLOAD_LETTER
  432.    Timeout 15 Goto GIVE_UP
  433. End
  434. ;------------------------------------------------------
  435. ; These states execute for each letter to be downloaded.
  436. ; They save the letter to the mail.tmp file, download
  437. ; the file, instruct RFD to put the letter in the In Box,
  438. ; delete the letter on the host, then check for more mail.
  439. ;
  440. Begin FETCH_FROM_MAIN_MENU
  441.    When %mailprompt% Goto PRESERVE_MAIL
  442.    Timeout 10 Goto PRESERVE_MAIL
  443. End
  444. Begin PRESERVE_MAIL
  445.    Transmit 'preserve *'
  446.    Cr
  447.    ClearIndex
  448.    When %mailprompt% Goto DEL_TMPFILE
  449.    Timeout 20 Goto DEL_TMPFILE
  450. End
  451. Begin DEL_TMPFILE
  452.    Transmit %mailshellesc%
  453.    Transmit %rm%
  454.    Transmit $LETTER.FILENAME
  455.    Cr
  456.    NextIndex
  457.    When %mailprompt% Goto SAVE_CURLETTER
  458.    Timeout 20 Goto SAVE_CURLETTER
  459. End
  460. Begin SAVE_CURLETTER
  461.    Transmit %saveletter%
  462.    Transmit $INDEX
  463.    Transmit ' '
  464.    Transmit $LETTER.FILENAME
  465.    Cr
  466.    When 'New file' Goto REQUEST_DOWNLOAD
  467.    When 'No messages' Goto NO_MORE_MAIL
  468.    When 'Invalid message' Goto NO_MORE_MAIL
  469.    Timeout 10 Goto REQUEST_DOWNLOAD
  470. End
  471. Begin REQUEST_DOWNLOAD
  472.    Caption 'Fetching Mail'
  473.    Transmit %mailshellesc%
  474.    Transmit %sz%
  475.    Transmit $LETTER.FILENAME
  476.    Cr
  477.    When %szprompt1% Goto DOWNLD_LETTER
  478.    Timeout 20 Goto ABORT_DOWNLD
  479. End
  480. Begin ABORT_DOWNLD
  481.    Control X
  482.    Control X
  483.    Control X
  484.    Control X
  485.    Control X
  486.    Control X
  487.    Control X
  488.    Control C
  489.    When %prompt% Goto JUMP_TO_MAIL
  490.    When %mailprompt% Goto REQUEST_DOWNLOAD
  491.    Timeout 20 Goto JUMP_TO_MAIL
  492. End
  493. Begin PAUSE_FOR_DOWNLD
  494.    Timeout 1 Goto DOWNLD_LETTER
  495. End
  496. Begin DOWNLD_LETTER
  497.    Download %dnloadproto% Then DOWNLD_SUCCESS Else RETRY_DNLOAD
  498. End
  499. Begin RETRY_DNLOAD
  500.    Caption 'Retrying Download'
  501.    Transmit %mailnull%
  502.    Cr
  503.    When %mailprompt% Goto RETRY_REQDNLOAD
  504.    Timeout 5 Goto RETRY_REQDNLOAD
  505. End
  506. Begin RETRY_REQDNLOAD
  507.    Transmit %mailshellesc%
  508.    Transmit %sz%
  509.    Transmit $LETTER.FILENAME
  510.    Cr
  511.    When %szprompt1% Goto RETRY_DOWNLD_LETTER
  512.    Timeout 20 Goto ABORT_DOWNLD
  513. End
  514. Begin RETRY_DOWNLD_LETTER
  515.    Download %dnloadproto% Then DOWNLD_SUCCESS Else GIVE_UP
  516. End
  517. Begin DOWNLD_SUCCESS
  518.    Confirm LETTER.RECEIVED Successful
  519.    Caption 'Letter Received'
  520.    Transmit %mailnull%
  521.    Cr
  522.    When %mailprompt% Goto DELETE_LETTER
  523.    Timeout 5 Goto SEND_DOWNLD_CR
  524. End
  525. Begin SEND_DOWNLD_CR
  526.    Transmit %mailnull%
  527.    Cr
  528.    When %mailprompt% Goto DELETE_LETTER
  529.    Timeout 5 Goto SEND_DOWNLD_CR
  530. End
  531. Begin DELETE_LETTER
  532.    Caption 'Deleting Letter'
  533.    Transmit %deleteletter%
  534.    Transmit ' '
  535.    Transmit $INDEX
  536.    Cr
  537.    When %mailprompt% Goto DEL_TMPFILE
  538.    Timeout 10 Goto DEL_TMPFILE
  539. End
  540. Begin NO_MORE_MAIL
  541.    Caption 'Fetched Mail'
  542.    When %mailprompt% Goto END_FETCH
  543.    Timeout 10 Goto END_FETCH
  544. End
  545. Begin END_FETCH
  546.    Transmit %quitmail%
  547.    Cr
  548.    If MORE_LETTERS Then SEND_MAIL
  549.    When %mailprompt% Goto END_FETCH
  550.    When %prompt% Goto LOG_OFF
  551.    Timeout 10 Goto LOG_OFF
  552. End
  553. ;------------------------------------------------------
  554. ; These states execute for each letter to send.  First
  555. ; the letter is uploaded into the mail.tmp file, then
  556. ; the host's mail program is run, giving it the address,
  557. ; then the subject, body, and CC information.
  558. ;
  559. Begin SEND_MAIL
  560.    When %prompt% Goto DEL_UPFILE
  561.    Timeout 15 Goto DEL_UPFILE
  562. End
  563. Begin DEL_UPFILE
  564.    Transmit %rm%
  565.    Transmit $LETTER.FILENAME
  566.    Cr
  567.    When %prompt% Goto REQUEST_UPLOAD_LETTER
  568.    Timeout 30 Goto GIVE_UP
  569. End
  570. Begin REQUEST_UPLOAD_LETTER
  571.    Transmit %rz%
  572.    Cr
  573.    When %rzprompt1% Goto BEGIN_LETTER_UPLOAD
  574.    When %rzprompt2% Goto BEGIN_LETTER_UPLOAD
  575.    Timeout 20 Goto GIVE_UP
  576. End
  577. Begin WAIT_FOR_UPLOAD
  578.    Timeout 1 Goto BEGIN_LETTER_UPLOAD
  579. End
  580. Begin BEGIN_LETTER_UPLOAD
  581.    NewLetter
  582.    Upload %uploadproto% Then UPLOAD_SUCCESS Else GIVE_UP
  583. End
  584. Begin UPLOAD_SUCCESS
  585.    Caption 'Letter Uploaded'
  586.    Cr
  587.    When %prompt% Goto SEND_LETTER
  588.    Timeout 5 Goto END_LETTER_UPLOAD
  589. End
  590. Begin END_LETTER_UPLOAD
  591.    Cr
  592.    When %prompt% Goto SEND_LETTER
  593.    Timeout 5 Goto END_LETTER_UPLOAD2
  594. End
  595. Begin END_LETTER_UPLOAD2
  596.    Control C
  597.    When %prompt% Goto SEND_LETTER
  598.    Timeout 5 Goto GIVE_UP
  599. End
  600. Begin SEND_LETTER
  601.    Transmit %sendmail%
  602.    Transmit $LETTER.DEST.USERNAME
  603.    Cr
  604.    When %subjectprompt% Goto SEND_SUBJECT
  605.    When 'not found' Goto RETRY_SEND_LETTER
  606.    Timeout 15 Goto GIVE_UP
  607. End
  608. Begin RETRY_SEND_LETTER
  609.    Transmit %sendmail%
  610.    Transmit $LETTER.DEST.USERNAME
  611.    Cr
  612.    When %subjectprompt% Goto SEND_SUBJECT
  613.    When 'not found' Goto GIVE_UP
  614.    Timeout 15 Goto GIVE_UP
  615. End
  616. Begin SEND_SUBJECT
  617.    Transmit $LETTER.SUBJECT
  618.    Cr
  619.    Timeout 2 Goto SEND_BODY
  620. End
  621. Begin SEND_BODY
  622.    Transmit '~r '
  623.    Transmit $LETTER.FILENAME
  624.    Cr
  625.    Timeout 1 Goto %signature%
  626. End
  627. Begin SEND_SIG
  628.    Transmit '~r .signature'
  629.    Cr
  630.    Timeout 1 Goto NO_SIGNATURE
  631. End
  632. Begin SEND_CC
  633.    Transmit '~c '
  634.    CreateCC 0 80 Delimiter ','
  635.    Transmit $LETTER.CC
  636.    Cr
  637.    Timeout 1 Goto NO_SIGNATURE
  638. End
  639. Begin NO_SIGNATURE
  640.    If LETTER.CC Then SEND_CC
  641.    Control D
  642.    When %prompt% Goto LETTER_SENT
  643.    When %ccprompt1% Goto SEND_CC_CR
  644.    When %ccprompt2% Goto SEND_CC_CR
  645.    When %ccprompt3% Goto SEND_CC_CR
  646.    Timeout 5 Goto NO_SIGNATURE
  647. End
  648. Begin SEND_CC_CR
  649.    Cr
  650.    When %prompt% Goto LETTER_SENT
  651.    When %ccprompt1% Goto SEND_CC_CR
  652.    When %ccprompt2% Goto SEND_CC_CR
  653.    When %ccprompt3% Goto SEND_CC_CR
  654.    Timeout 10 Goto SEND_CC_CR
  655. End
  656. Begin LETTER_SENT
  657.    Caption 'Letter Sent'
  658.    Confirm LETTER.SENT Successful
  659.    Transmit %rm%
  660.    Transmit $LETTER.FILENAME
  661.    Cr
  662.    When %prompt% Goto SEND_MORE_MAIL
  663.    Timeout 15 Goto GIVE_UP
  664. End
  665. Begin SEND_MORE_MAIL
  666.    If MORE_LETTERS Then REQUEST_UPLOAD_LETTER
  667.    If TRUE Then LOG_OFF
  668. End
  669. ;------------------------------------------------------
  670. ; These states deal with logging off the system
  671. ;
  672. Begin WAIT_TO_LOG_OFF
  673.    When %prompt% Goto LOG_OFF
  674.    Timeout 20 Goto GIVE_UP
  675. End
  676. Begin LOG_OFF
  677.    Transmit %logoff%
  678.    Cr
  679.    Caption 'Logging off'
  680.    When 'NO CAR' Goto EXIT_PROGRAM
  681.    When %logoffbanner1% Goto HANGUP_PHONE
  682.    When %logoffbanner2% Goto HANGUP_PHONE
  683.    When %prompt% Goto LOG_OFF
  684.    CarrierLoss Goto EXIT_PROGRAM
  685.    Timeout 20 Goto GIVE_UP
  686. End
  687. Begin EXIT_PROGRAM
  688.    Caption 'Logged off'
  689.    CarrierLoss Goto EXIT_PROGRAM
  690.    Timeout 3 Goto BYE_BYE
  691. End
  692. Begin GIVE_UP
  693.    Caption 'Aborting'
  694.    Hangup
  695.    CarrierLoss Goto EXIT_PROGRAM
  696. End
  697. Begin HANGUP_PHONE
  698.    Hangup
  699.    CarrierLoss Goto EXIT_PROGRAM
  700. End
  701. Begin NO_LOGIN
  702.    Timeout 5 Goto GIVE_UP
  703. End
  704. Begin BYE_BYE
  705.    Exit
  706. End
  707.  
  708.